package com.bcxj.routeplan.service;

import com.bcxj.internalcommon.response.ResponseResult;
import com.bcxj.routeplan.client.RoutePlanClient;
import com.bcxj.routeplan.utils.RecommendUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * ClassName: RouteplanService
 * Package: com.bcxj.routeplan.service
 * Description:
 *
 * @Author BCXJ
 * @Create 2025/2/13 09:38
 * @Version 1.0
 * @Since 1.0
 */
@Service
public class RouteplanService {

    @Autowired
    private RoutePlanClient routePlanClient;

    @Autowired
    private RecommendUtil recommendUtil;

    /**
     * 获取步行数据
     *
     * @param depLongitude
     * @param depLatitude
     * @param destLongitude
     * @param destLatitude
     * @return
     */
    public ResponseResult walk(String depLongitude, String depLatitude, String destLongitude, String destLatitude) {
        return routePlanClient.getDirectionWalk(depLongitude, depLatitude, destLongitude, destLatitude);
    }

    /**
     * 获取驾车的数据
     *
     * @param depLongitude
     * @param depLatitude
     * @param destLongitude
     * @param destLatitude
     * @return
     */
    public ResponseResult driving(String depLongitude, String depLatitude, String destLongitude, String destLatitude, String strategy) {

        return routePlanClient.getDirectionDrive(depLongitude, depLatitude, destLongitude, destLatitude, strategy);
    }

    /**
     * 获取公共交通的出行的数据
     *
     * @param depLongitude
     * @param depLatitude
     * @param destLongitude
     * @param destLatitude
     * @return
     */
    public ResponseResult transit(String depLongitude, String depLatitude, String destLongitude, String destLatitude, String depCity, String destCity, String strategy) {
        return routePlanClient.getDirectionTransit(depLongitude, depLatitude, destLongitude, destLatitude, depCity, destCity, strategy);
    }


    /**
     * 骑行的出行方式的数据
     *
     * @param depLongitude
     * @param depLatitude
     * @param destLongitude
     * @param destLatitude
     * @return
     */
    public ResponseResult bicycle(String depLongitude, String depLatitude, String destLongitude, String destLatitude) {
        return routePlanClient.getBicycle(depLongitude, depLatitude, destLongitude, destLatitude);
    }


    /**
     * 推荐服务
     *
     * @param userId
     * @param depLongitude
     * @param depLatitude
     * @param destLongitude
     * @param destLatitude
     * @return
     */
    public ResponseResult recommend(Long userId, String depLongitude, String depLatitude, String destLongitude, String destLatitude) {
        // 调用python web接口获取用户的推荐出行方式,待完善
        Integer way = routePlanClient.getRecommendWay(userId,depLongitude, depLatitude, destLongitude, destLatitude);

        // 获取对应的出行方式的数据(工厂模式)
        return recommendUtil.getDirectionRecommendVO(way, depLongitude, depLatitude, destLongitude, destLatitude);
    }
}
